package com.fofia.iotweb.common;

import cn.hutool.core.util.IdUtil;
import com.github.yitter.contract.IIdGenerator;
import com.github.yitter.contract.IdGeneratorOptions;
import com.github.yitter.idgen.DefaultIdGenerator;

public class IdHelper extends IdUtil {
    private static IIdGenerator idGenInstance = null;
    static {
        initYitId();
    }
    public static void initYitId(){
        short workerId=1;
        IdGeneratorOptions options = new IdGeneratorOptions(workerId);
        // options.WorkerIdBitLength = 10; // 默认值6，限定 WorkerId 最大值为2^6-1，即默认最多支持64个节点。
        // options.SeqBitLength = 6; // 默认值6，限制每毫秒生成的ID个数。若生成速度超过5万个/秒，建议加大 SeqBitLength 到 10。
        // options.BaseTime = Your_Base_Time; // 如果要兼容老系统的雪花算法，此处应设置为老系统的BaseTime。
        // ...... 其它参数参考 IdGeneratorOptions 定义。
        // 保存参数（务必调用，否则参数设置不生效）：
        idGenInstance = new DefaultIdGenerator(options);
    }

    /**
     * 雪花id 短id算法
     * @return
     */
    public static long nextId(){
        return idGenInstance.newLong();
    }
    /**
     * objectid 算法
     * @return
     */
    public static String objectId(){
        return IdUtil.objectId();
    }
}
